Realized Profit & Loss [BigBeluga]The Realized Loss & Profit indicator aims to find potential dips and tops in price by utilizing the security function syminfo.basecurrency + "_LOSSESADDRESSES".
The primary objective of this indicator is to present an average, favorable buying/selling opportunity based on the number of people currently in profit or loss.
The script takes into consideration the syminfo.basecurrency, so it should automatically adapt to the current coin.
🔶 USAGE
Users have the option to enable the display of either Loss or Profit, depending on their preferred visualization.
Examples of displaying Losses:
Example of displaying Profits:
🔶 CONCEPTS
The concept aims to assign a score to the data in the ticker representing the realized losses. This score will provide users with an average of buying/selling points that are better to the typical investor.
🔶 SETTINGS
Users have complete control over the script settings.
🔹 Calculation
• Profit: Display people in profit on an average of the selected length.
• Loss: Display people in loss on an average of the selected length.
🔹 Candle coloring
• True: Color the candle when data is above the threshold.
• False: Do not color the candle.
🔹 Levels
- Set the level of a specific threshold.
• Low: Low losses (green).
• Normal: Low normal (yellow).
• Medium: Low medium (orange).
• High: Low high (red).
🔹 Z-score Length: Length of the z-score moving window.
🔹 Threshold: Filter out non-significant values.
🔹 Histogram width: Width of the histogram.
🔹 Colors: Modify the colors of the displayed data.
🔶 LIMITATIONS
• Since the ticker from which we obtain data works only on the daily timeframe, we are
restricted to displaying data solely from the 1D timeframe.
• If the coin does not have any realized loss data, we can't use this script.
Search in scripts for "THE SCRIPT"
3D EngineHello everyone,
I am excited to share with you the first 3D engine in Pine Script! This is a remarkable achievement that will enable traders to explore the possibilities of 3D objects in their technical analysis.
To use this engine, you will need to use a higher time frame (1W or greater) to load the 3D objects in time. The code is straightforward and easy to use, with various input options to customize the object's position, rotation, and scale. You can select between two default 3D objects, Pin or Ball, by changing the 'list' input string.
The 3D engine is based on the vector and mesh data structures, and it includes several utility functions to perform operations such as rotation, translation, and scaling on these structures. It also includes functions to calculate perspective transformation for projecting 3D objects onto a 2D surface, which is the essential step in rendering the object in a 2D chart.
The 'process_scene' function is the main function that converts the 3D object data into 2D polygon data, which can be rendered on the chart. This function uses the 'process_object' function, which applies the object's transformation (position, rotation, and scale) and returns a scaled and rotated mesh that is ready for projection.
At the end of the code, there is a camera object that defines the camera's position, target, and field of view. You can customize this camera object to change the perspective of the rendered object.
To make your own 3D object, you can use the included Python program to convert an OBJ file into the format used by the engine. This program converts the OBJ file into a list of vector4 objects, which can be copy-pasted into the 'pin_vertex_list' array or a similar array. Please note that this process requires some knowledge of Python and the OBJ file format.
Overall, this is a fantastic achievement that opens up new possibilities for technical analysis in Pine Script. I encourage you to try it out and see what you can create with it.
In this code, there are several functions and data structures used to represent and manipulate 3D objects in a simple 3D engine. I will explain each function in detail below:
radians(degree): Converts an angle in degrees to radians.
quat_identity(): Returns a quaternion representing the identity rotation.
quat_from_axis_angle(axis, angle): Creates a quaternion from an axis of rotation and an angle.
quat_multiply(q1, q2): Multiplies two quaternions, q1 and q2, and returns the result.
quat_conjugate(q): Returns the conjugate of a quaternion, q.
quat_rotate(q, v): Rotates a 3D vector, v, by a quaternion, q, and returns the result.
rotate_vector_by_quaternion(v, q): Rotates a 3D vector, v, by a quaternion, q, and returns the result.
scale_vector(vector, constant): Scales a 3D vector by a constant and returns the result.
scale_mesh(mesh_obj, constant): Scales a mesh by a constant and returns the new mesh.
rotate_mesh(mesh_obj, axis, angle): Rotates a mesh around a specified axis by a given angle and returns the new mesh.
quat_translate(src, offset): Translates a 3D vector, src, by an offset and returns the result.
translate_mesh(mesh_obj, offset): Translates a mesh by an offset and returns the new mesh.
perspective_transform(msh, cam): Transforms a 3D mesh into a 2D mesh using a camera.
process_object(obj, cam): Processes a 3D object with a camera and returns a 2D mesh.
size(scene): Calculates the total number of vertices in a scene.
make_poly(scene): Converts a scene of 2D meshes into an array of polygons.
process_scene(scn, cam): Processes an entire scene of 3D objects with a camera and returns an array of polygons.
These functions work together to create a simple 3D engine that can manipulate, transform, and render 3D objects as 2D polygons. The main part of the script defines the camera, vertices, and faces for a pin object, and then uses the functions to process and render the object.
Note that some types are also defined in the code, including vector2, vector3, vector4, face, mesh, mesh2d, location, object, poly4, polyg, and camera. These types represent various mathematical structures and entities used in 3D graphics, such as vectors, faces, meshes, and cameras.
Here is an explanation of the inputs for all the functions in the given code:
radians(degree):
degree: Angle in degrees to be converted to radians.
quat_from_axis_angle(axis, angle):
axis: A vector3 object representing the axis of rotation.
angle: The angle in radians to rotate about the axis.
quat_multiply(q1, q2):
q1, q2: Two quaternion objects to be multiplied.
quat_conjugate(q):
q: A quaternion object whose conjugate is to be calculated.
quat_rotate(q, v):
q: The quaternion representing the rotation.
v: The vector3 object to be rotated.
rotate_vector_by_quaternion(v, q):
v: The vector3 object to be rotated.
q: The quaternion representing the rotation.
scale_vector(vector, constant):
vector: A vector4 object to be scaled.
constant: The scaling factor.
scale_mesh(mesh_obj, constant):
mesh_obj: A mesh object to be scaled.
constant: The scaling factor.
rotate_mesh(mesh_obj, axis, angle):
mesh_obj: A mesh object to be rotated.
axis: A vector3 object representing the axis of rotation.
angle: The angle in radians to rotate the mesh.
quat_translate(src, offset):
src: A vector4 object representing the source position.
offset: A vector3 object representing the translation offset.
translate_mesh(mesh_obj, offset):
mesh_obj: A mesh object to be translated.
offset: A vector3 object representing the translation offset.
perspective_transform(msh, cam):
msh: A mesh object to be transformed.
cam: A camera object used for the transformation.
process_object(obj, cam):
obj: An object containing a mesh and its location.
cam: A camera object used for processing the object.
make_poly(scene):
scene: An array of mesh2d objects to generate polygons from.
process_scene(scn, cam):
scn: An array of objects containing meshes and their locations.
cam: A camera object used for processing the scene.
Note that some of these functions are utility functions or internal functions, and their inputs are derived from other functions or user inputs.
I will make a library eventually.
Correlation Coefficient TableThis is a sample PineSript code implementation using Correlation Coefficient. It uses the ta.correlation library of Pinescript and calculates the correlation based on user input length. The results are then plotted on a table. The corr value displays the actual correlation coefficient value while the Corr Status displays the interpretation of the correlation coefficient values.
The script takes the following input
Source Symbol - This is the base symbol which will be used in calculating correlation coefficient. In my case, since i am looking more often on crypto. I defaulted it to BTCUSDT
Symbol 1 - Symbol 5 - These are the coins that will be compared to our base symbol for correlation.
Source - You can select on which price source you want to be calculated. By default this is set to candle close price.
Length - The number of price bar to look back and retrieve correlation coefficient. Set to 20 bars by default.
Table Settings - Since the correlation coefficient are displayed on a table. An option to customize the table settings are presented.
The Correlation Status column was based on this Interpretation:
For more information, read this article www.tradingview.com
Liquidity Swings [LuxAlgo]The liquidity swings indicator highlights swing areas with existent trading activity. The number of times price revisited a swing area is highlighted by a zone delimiting the swing areas. Additionally, the accumulated volume within swing areas is highlighted by labels on the chart. An option to filter out swing areas with volume/counts not reaching a user-set threshold is also included.
This indicator by its very nature is not real-time and is meant for descriptive analysis alongside other components of the script. This is normal behavior for scripts detecting pivots as a part of a system and it is important you are aware the pivot labels are not designed to be traded in real-time themselves.
🔶 USAGE
The indicator can be used to highlight significant swing areas, these can be accumulation/distribution zones on lower timeframes and might play a role as future support or resistance.
Swing levels are also highlighted, when a swing level is broken it is displayed as a dashed line. A broken swing high is a bullish indication, while a broken swing low is a bearish indication.
Filtering swing areas by volume allows to only show significant swing areas with an higher degree of liquidity. These swing areas can be wider, highlighting higher volatility, or might have been visited by the price more frequently.
🔶 SETTINGS
Pivot Lookback : Lookback period used for the calculation of pivot points.
Swing Area : Determine how the swing area is calculated, "Wick Extremity" will use the range from price high to the maximum between price close/open in case of a swing high, and the range from price low to the minimum between price close/open in case of a swing low. "Full Range" will use the full candle range as swing area.
Intrabar Precision : Use intrabar data to calculate the accumulated volume within a swing area, this allows obtaining more precise results.
Filter Areas By : Determine how swing areas are filtered out, "Count" will filter out swing areas where price visited the area a number of time inferior to the user set threshold. "Volume" will filter out swing areas where the accumulated volume within the area is inferior to the user set threshold.
🔹 Style
Swing High : Show swing highs.
Swing Low : Show swing lows.
Label Size : Size of the labels on the chart.
Note that swing points are confirmed after Pivot Lookback bars, as such all elements are displayed retrospectively.
Adaptive Fisherized Stochastic Center of GravityIntroduction
I modified the script "Fisher Stochastic Center of Gravity" of @DasanC for this indicator.
I added inverse Fisher transform, cycle period adaptiveness mode (Ehlers) and smoothing to it.
Moreover, I added buy and sell and beautified some stuff.
Lastly, it is also non-repainting!
Usage
This indicator can be used like a normal stochastic, but I don't recommend divergence analysis on it.
That fisherization stuff seems to make the graphs unuseable for that because it tries.
It works well on every timeframe I would say, but lower timeframes are recommended, because of the fast nature of stochastic.
Usually it does a good job on entry confirmation for reversals and trend continuation trades.
Recommended indicator to combine with this indicator is RSI cyclic smoothed v2 .
This is the best RSI version I know. In trending market it is recommended to look more on the inner bands and in flat market it is recommended to look more on the outer bands.
When RSI shows oversold and this indicator shows a crossover of the Center of Gravity plot through the bottom line -> Long entry is confirmed
When RSI shows overbought and this indicator shows a crossunder of the Center of Gravity plot through the top line -> Short entry is confirmed
Settings
The adaptive mode is enabled by default to give you straight the whole indicator experience.
The default settings are optimized, but should be changed depending on the market.
An example:
Market has a low volatility and a high momentum -> I want a slower/higher length to catch the slower new highs and lows.
Market has higher volatility and a low momentum, -> I want a faster/lower length to catch the faster new highs and lows
Signals
Crossover
Buy -> cog crossover signalLine
Sell -> cog crossunder signalLine
Overbought/Oversold Crossover
Buy -> cog crossover lowerBand
Sell -> cog crossunder lowerBand
I use this indicator a lot, because I don't know a better stochastic on this community here.
@DasanC did an awesome work with his version I used as base for this script.
Enjoy this indicator and let the profit roll! 🔥
Capital Asset Pricing Model (CAPM) [Loxx]Capital Asset Pricing Model (CAPM) demonstrates how to calculate the Cost of Equity for an underlying asset using Pine Script. This script will only work on the monthly timeframe. While you can change the default inputs, you should study what CAPM is and how this works before doing so. This indicator pulls various types of data from SPY from various timeframes to calculate risk-free rates, market premiums, and log returns. Alpha and Beta are computed using the regression between underlying asset and SPY. This indicator only calculates on the most recent data. If you wish to change this, you'll have to save the script and make adjustments. A few examples where CAPM is used:
Used as the mu factor Geometric Brownian Motion models for options pricing and forecasting price ranges and decay
Calculating the Weighted Average Cost of Capital
Asset pricing
Efficient frontier
Risk and diversification
Security market line
Discounted Cashflow Analysis
Investment bankers use CAPM to value deals
Account firms use CAPM to verify asset prices and assumptions
Real estate firms use variations of CAPM to value properties
... and more
Details of the calculations used here
Rm is calculated using yearly simple returns data from SPY, typically this is just hard coded as 10%.
Rf is pulled from US 10 year bond yields
Beta and Alpha are pulled form monthly returns data of the asset and SPY
In the past, typically this data is purchased from investments banks whose research arms produce values for beta, alpha, risk free rate, and risk premiums. In 2022 ,you can find free estimates for each parameter but these values might not reflect the most current data or research.
History
The CAPM was introduced by Jack Treynor (1961, 1962), William F. Sharpe (1964), John Lintner (1965) and Jan Mossin (1966) independently, building on the earlier work of Harry Markowitz on diversification and modern portfolio theory. Sharpe, Markowitz and Merton Miller jointly received the 1990 Nobel Memorial Prize in Economics for this contribution to the field of financial economics. Fischer Black (1972) developed another version of CAPM, called Black CAPM or zero-beta CAPM, that does not assume the existence of a riskless asset. This version was more robust against empirical testing and was influential in the widespread adoption of the CAPM.
Usage
The CAPM is used to calculate the amount of return that investors need to realize to compensate for a particular level of risk. It subtracts the risk-free rate from the expected rate and weighs it with a factor – beta – to get the risk premium. It then adds the risk premium to the risk-free rate of return to get the rate of return an investor expects as compensation for the risk. The CAPM formula is expressed as follows:
r = Rf + beta (Rm – Rf) + Alpha
Therefore,
Alpha = R – Rf – beta (Rm-Rf)
Where:
R represents the portfolio return
Rf represents the risk-free rate of return
Beta represents the systematic risk of a portfolio
Rm represents the market return, per a benchmark
For example, assuming that the actual return of the fund is 30, the risk-free rate is 8%, beta is 1.1, and the benchmark index return is 20%, alpha is calculated as:
Alpha = (0.30-0.08) – 1.1 (0.20-0.08) = 0.088 or 8.8%
The result shows that the investment in this example outperformed the benchmark index by 8.8%.
The alpha of a portfolio is the excess return it produces compared to a benchmark index. Investors in mutual funds or ETFs often look for a fund with a high alpha in hopes of getting a superior return on investment (ROI).
The alpha ratio is often used along with the beta coefficient, which is a measure of the volatility of an investment. The two ratios are both used in the Capital Assets Pricing Model (CAPM) to analyze a portfolio of investments and assess its theoretical performance.
To see CAPM in action in terms of calculate WACC, see here for an example: finbox.com
Further reading
en.wikipedia.org
Multiple Non-Anchored VWAPA lot of VWAP scripts are anchored and only allow single VWAP additions. This script allows up to 5 simultaneous VWAPs, for example monthly, quarterly, yearly, 3 years, etc. Can also be used on smaller timeframes. The non-anchored part of the script allows it to be constantly rolling, with no resets.
I do not endorse this script, it was created at my request :)
Improved Z-ScoreStandard Z-Score scripts lack customization of parameters that I personally desire when doing quantitative analysis. This is an improved Z-Score Indicator to add to your charts that lets you customize various inputs.
Below are the current features:
1) Ticker Type - which data would you like to use for the ticker input - Open, High, Low, Close, OHLC4
2) Ticker Smoothing? - sometimes if you have noisy data, it could be useful to smooth the ticker with a very fast EMA. If this is set to true, the ticker data will be smoothed with an EMA with period that you specify.
3) Ticker Smoothing Period - if Ticker Smoothing? is set to true, this will allow you to specify the smoothing period of the fast EMA - I usually use a 3-period for all of my quantitative analysis, if I am using smoothing.
4) MA Type - Z-Scores are normalized by subtracting a moving average. This allows you to select either a Simple Moving Average (SMA) or an Exponential Moving Average (EMA) - the standard is to use SMA.
5) MA Period - the previous X number of bars that you would like to use for normalization. The default is set to 21 (this is roughly 1 month of trading days data for a daily chart).
5) Standard Deviation Period - Z-Scores are normalized by dividing by the standard deviation over X previous periods. This allows you the chance to customize. Default is 252 (this is roughly 1 year of trading days data for a daily chart).
I can add more features if folks are interested, let me know! I hope you like the script.
Best regards,
-Jim Bosse-
RSI vs Longs/Shorts Margin Ratio Percentage RankThis indicator plots the RSI of the current token and the percentage rank, of the RSI, of the ratio of a long margined token to a short margined token.
By default it plots the RSI of the current token with a color based on percentage rank the RSI of BITFINEX:BTCUSDLONGS divided by BITFINEX:BTCUSDSHORTS, so the assumption is that you are using it on a BTC chart. While you can select any Tradingview symbol for your Long and Short tokens I don't think you will get meaningful results unless you select a long and short margined token that matches your chart symbol, such as BITFINEX:ETHUSDLONGS and BITFINEX:ETHUSDSHORTS if you're trading ETHUSD. Even using margined tokens the results may not be meaningful, if there is not enough trade volume in the token, or if they are being manipulated, so you must backtest everything.
The three plot options are:
• Colored RSI - RSI plotted with colors based on the Longs/Shorts ratio
• Background Color - White RSI plot with Longs/Shorts ratio as background color
• RSI + Ratio - White RSI with Longs/Shorts ratio plotted in color
The chart shows all three options on an hourly BITFINEX:SOLUSD chart with BITFINEX:SOLUSDSHORTS and BITFINEX:SOLUSDLONGS.
By default it also plots a short term moving average and it can also plot the raw ratio rather than the percentage rank if selected.
This script started out as "RSI vs BITFINEX BTC Longs/Shorts Margin Ratio Percentage Rank" by me. I was interested in the ratio of BITFINEX:BTCUSDLONGS to BITFINEX:BTCUSDSHORTS as a measure of market sentiment and how that sentiment would magnify RSI changes. The volatility of the BTCUSDLONGS : BTCUSDSHORTS ratio was too low to get a good read, using a percent rank of the RSI of the ratio made the results more visible. After a discussion with @jason5480 I saw how opening it up to all margined Long / Short pairs was the best way forward. Unfortunately the name no longer matched the script, so I had to publish a new script.
Cubic Bézier Curve Extrapolation [LuxAlgo]The following script allows for the extrapolation of a Cubic Bézier Curve fit using custom set control points and can be used as a drawing tool allowing users to estimate underlying price trends or to forecast future price trends.
Settings
Extrapolation Length: Number of extrapolated observations.
Source: Source input of the script.
Style
Width: Bézier curve line width.
Colors: The curve is colored based on the direction it's taking, the first color is used when the curve is rising, and the second when it is declining.
The other settings determine the locations of the control points. The user does not need to change them from the settings, instead only requiring adjusting their location on the chart like with a regular drawing tool. Setting these control points is required when adding the indicator to your chart.
Usage
Bézier curves are widely used in a lot of scientific and artistic fields. Using them for technical analysis can be interesting due to their extrapolation capabilities as well as their ease of calculation.
A cubic Bézier curve is based on four control points. Maxima/Minimas can be used as control points or the user can set them such that part of the extrapolated observation better fits the most recent price observations.
A possible disadvantage of Bézier curves is that obtaining a good fit with the data is not their primary goal. Rational Bézier curves can be used if obtaining a good fit is the primary user goal.
Details
At their core, Bézier curves are obtained from nested linear interpolation between each control point and the resulting linearly interpolated results. The Bézier curve point located at the first control point P0 and the last curve point located at the last control point Pn are equal to their respective control points. However, this script does not make use of this approach, instead using a more explicit form.
As mentioned previously, the complexity of a Bézier curve can be determined by its number of control points which is related to the Bézier curve degree (number of control points - 1). Instead of using nested linear interpolations to describe Bézier curves, one can describe them as a polynomial of a degree equal to the degree of the wanted Bézier curve.
Better Divergence On Any Indicator [DoctaBot]This is an expansion of the Tradingview built in Divergences indicator (bottom) with 2 MAJOR differences.
First, and most importantly, the built in indicator identifies pivots in your chosen oscillator, but then utilizes the corresponding candle's HIGH or LOW to identify potential divergences. I'm not a fan of this method because oscillator values are typically calculated using the candle CLOSE values, so, in my opinion, divergences should be identified using the candle CLOSE value as well, as they are in this script.
Second, the built in divergence indicator only looks back one oscillator pivot for potential divergences. I coded this to look back one additional pivot as well to identify more valid potential divergences. The script will only identify these types of "multiple pivot divergences" if the oscillator pivot in between the two diverging pivots DOES NOT intersect the line being drawn them.
Notes for chart:
#1: This built in Divergence indicator misses this hidden bearish divergence because of the pivot in between (marked with red vertical line). No divergence exists between the most recent pivots, but it does if we compare it to the next one back.
#2: The RSI14 is making a lower high here, the first criteria for a bearish divergence. The built in Divergence indicator then references the candles' HIGHS. Because the most recent HIGH exceeds the previous one, it is considered a higher high and incorrectly identified as a bearish divergence. If we use the candle CLOSE price to identify divergences, this does not qualify.
#3: Here, we see both of the updates in action. Neither of these bearish divergences are identified with the built in Divergence Indicator. The first divergence s missed due to the use of candle HIGHS rather than closes; the original HIGH is greater than the next HIGH, however, comparison of closes shows that it is, in fact, a higher CLOSE. The second divergence is missed because original indicator can only look back one pivot and, consequently, misses the divergence between the next one back.
Please note, you may notice while using this script that some of the older divergences do not show any lines between the oscillator pivots. THIS IS NOT A BUG! In order to draw divergence lines properly for multiple pivots back, I had to use the line.new functions rather than plot functions. These line functions will delete old lines when a certain number have been drawn on the chart so these old ones are automatically erased as time passes.
[RedK] Stepped Moving Average Channel (SMAC)The Stepping Moving Average Channel (SMAC) is not an indicator - It is more of a trading tool that was put together to enable a trader to take advantage of relatively fast price moves with quick incremental gain - maybe by exploiting opportunities to trade basic options (Calls, Puts) or to help with in/out-type swing trades. This is more a price-level visualization tool so please use it with this in mind, and not as a trading tool by itself.
While it looks very similar to a Donchian channel, SMAC plots a stepping channel of the moving average of the high & low prices (channel borders) - with an envelope that is at a user-specified % distance from the channel borders.
This setup, when combined with other Moving Averages and lower indicators, may make it easier for a trader to prepare for a trade with clear entry and exit price levels being planned upfront.
For example, a trader wants to capture 2% of the next move, will set the envelope to 2% and have clearer view of entry/exit price levels for such a scenario. once the trader receives confirmation (from other indicators or charts) that the price is heading in the way expected, the SMAC may make it simpler and quicker to estimate (and visualize) the entry/exit price levels and track the movement.
* The stepping feature helps remove price noise and the auto-stepping feature is designed to "snap to" those mental price levels that trader gravitate towards.
* The moving average type I used here is the Compound Ratio MA (CoRA_Wave) .
* This MA type was selected because it has a very high responsiveness and good smoothness, and tracks the price values very closely.
* The MA type can be replaced within the code with any other MA as preferred.
The auto-stepping feature:
----------------------------------
User can override the auto-stepping by entering a manual step value
when the auto-stepping is active, it will attempt to pick the best step size based on the underlying price range and the timeframe selected.
The step selection may not be ideal in some combination of value / TF - i will continue to improve these combinations
Stepping can also be completely disabled - this bring SMAC back to a regular (though highly responsive) Hi/Lo MA channel with envelope
The Excel table snippet in the chart above shows the various step value / TF combinations.
Also the stepping values can be further customized by changing the appropriate part in the script.
Other features:
--------------------
* Rounding Options: The stepping calculations uses one of 2 selectable methods:
1 -- regular rounding (uses the round() function): which rounds the price up & down depending on where it is compared to the half-step value
example: a value of 17 with a step of 10 will be rounded to 20. a value of 13 in that case will be rounded to 10
2 -- Whole Step (uses the int() function): this will only consider whole/fully completed steps - if the average (hi or low) does not explicitly exceed the next step level, we will not get that next value.
example: both values of 17 and 13 with a step of 10 will be rounded to 10.
* The "Quick Table":
The Quick Table shows on the top-left - and can be disabled in the script settings - It shows the currently selected stepping mode and value - since the auto-step changes dynamically with the selected chart timeframe, this makes it easier for the trader to view the active "configuration"
overall, i hope some traders find this quick utility useful - if not to use, maybe to inspire other ideas
- please feel free to use or customize in any way you need. Feel free to share feedback and observations.
Up/Down Indicator - DurbtradeA simple but unique indicator to show ONLY whether there is an increase or a decrease in price compared to the previous value.
Also includes a customizable SMA or EMA based "Smoothing Length" variable,
allowing the indicator to show whether the SMA or the EMA of the price
is up or down compared to the previous value.
An offset option is also included if you need it.
Settings :
Personal thoughts :
I wanted to have an indicator that showed ONLY whether the price is UP or DOWN from the previous value.
My logic was that I could have a more accurate perception of general up or down trend direction
if I removed the AMOUNT of increase or decrease happening from moment to moment over time.
From there, I added the SMA/EMA "Smoothing Length" and "Smoothing Type" variables into the script.
By increasing the value of the smoothing length above 1,
the indicator act as a color-changing moving average, except without showing an actual value.
"Smooth Length" acts just like the length of any other moving average...
When the value of the "Smooth Length" is = 1, the indicator shows whether PRICE is up or down.
When the value of the "Smooth Length" is = 50, the indicator shows whether the MOVING AVERAGE with a length of 50 is up or down.
When the value of the "Smooth Type" is = 1, the indicator is SMA based.
When the value of the "Smooth Type" is = 2, the indicator is EMA based.
As you can see in the main chart above, or in the picture below, I show the indicator in 2 different ways...
The indicator on the top shows price up/down action,
and the indicator on the bottom shows the 50 SMA up/down action :
Other key points :
The indicator height can be smashed down as small as possible and still remain 100% functional...
which is very important when chart real-estate is limited.
Here is an example of my main layout setup, with the Up/Down indicator on the top left :
As you can see, it takes up very little space, but still remains fully functional.
In the example above, I have it overlayed on the left chart price panel,
with the price visibility turned off.
If it is overlayed on the price panel like so, and you want to see both the indicator and price,
simply turn the price visibility on to see both.
Since the indicator displays itself merely by changing the color of the background,
layer order has no effect, and the indicator is always drawn in the background.
The Up/Down indicator can also be used in conjunction with other candle types
that sometimes display candle color differently than standard candles, such as heikin-ashi candles.
Just take note that the colors of the indicator may not match the colors of the heikin-ashi candles.
Finally, I looked very hard to find an indicator like this on TradingView, and found absolutely nothing.
I know that it is a simple concept, but I'm honestly surprised I couldn't find anything like it.
I have been using it for awhile now, and I'm proud of the results...
therefore, I'd like to share it with the community, along with my previously published indicators,
in the hope that you find it useful!
Outro :
A) As with my previous indicators,
this one was written while keeping information, color, clarity, chart real-estate, and customization in mind.
B) It is optimized to be displayed on all display setups...
for use on your own personal television, laptop, or cellular phone screen...
and on all chart zoom levels and layout styles.
C) Please feel free to comment your thoughts, critiques, or suggestions. They are all very helpful!
D) Check out my previous pine script indicators if you like this one. They work really well together.
E) I hope that you find this script useful.
F) Enjoy!
// Durbtrade
Unusual Time Frame VolumeThis script plots the ratio of each volume bar to the average daily volume of that specific bar (at that specific time of day).
You can see what the volume at the 09:30 (or whenever) bar looks like compared to the average volume at the same time during the previous X number of days.
The output can be read like a normal volume chart; however, you can see at a glance whether these is more volume than "normal" for that time of day.
A value of "2" would be 2x the "normal" volume; a value of "0.5" would be half.
Thus, if bars exceed the value of "1", you know that there is more volume than normal.
If the bar exceeds an adjustable threshold, it will change the color of the bar to yellow; otherwise it will be orange for values exceeding "1".
As a consequence to this approach, the plot is effectively normalized such that it obviates the need to scale up or down as volume changes throughout the day.
Notes:
If the settings are not set appropriately for your mode and time frame, the output will be incorrect/invalid!
Make sure you set the "Asset Mode" and "Time Frame (minutes)" to values that match your asset and chart setting. For example, if you are trading Futures on a 2m chart, set the Asset Mode to Futures and Time Frame to 2m. If you are trading crypto on a 5m chart, set the Asset Mode to 24/7 and Time Frame to 5m.
If you choose a "Look-back (Days)" setting that is too far back given the time frame, the script will produce an error. I suggest playing with settings from 1 (compares volume to the previous day's volume) to the highest number that doesn't break the script. For example, at a 2m time frame, the maximum look-back will be 6-7 depending on which mode you are using. Longer time frames allow larger look-back values. I find that the default value (6 Days) does a decent job in general.
Strat Assistant Alerts and Highs/LowsStrat Assistant FTC Only
----------------------------
█ OVERVIEW
This script is intended to highlight/draw lines for the prior high/low of 30, 60, day, week, month, quarter, as well as create the alerts for when these thresholds get crossed
Input
----------
The script has inputs for every time frame plotted - 30, 60, day, week, month, quarter. All of the following items below can be "modified"
is the high line active? (for the corresponding time frame, will plot the line yes or no - by default only the DAY is displayed)
is the low line active? (for the corresponding time frame, will plot the line yes or no - by default only the DAY is displayed))
The high line color - modify the color of the corresponding time frame high line to your liking
The low line color - modify the color of the corresponding time frame low line to your liking
The time frame line width - make some lines wider than others for easier distinction
Output
----------
Lines for each corresponding time frame activated in the selected color and width.
Custom alerts - open a stock, select the Alerts button at the top, click the condition as the name of this script. The next drop down will show you all the corresponding alerts you can set for the current price crossing above the prior timelines high or below the prior timelines low (the bracket number is just for sorting purposes).
Best Practices
----------
What's not mapped? - Style (you can't drive this by an input, by default day is dashed, the rest are a solid line)
What's not mapped? - Price on the Y axis. I'm still trying to figure this out, not sure you can do it. I can add a label, just gets cluttered fast
Played with this a little bit using crypto, but obviously I can't test out all these alerts without a lot of things moving. Please do your due diligence.
I know a million people are going to want a million things. I can create more alerts coming soon, for now I wanted to start with this. Please and comments or suggestions or feedback and I'll see what I can do. I can create labels (for price) randomly, but it will clutter the screen. Or I can create one big box or table with prices shown.
Pivot High/Low Analysis & Forecast [LuxAlgo]Returns pivot points high/low alongside the percentage change between one pivot and the previous one (Δ%) and the distance between the same type of pivots in bars (Δt). The trailing mean for each of these metrics is returned on a dashboard on the chart. The indicator also returns an estimate of the future time position of the pivot points.
This indicator by its very nature is not real-time and is meant for descriptive analysis alongside other components of the script. This is normal behavior for scripts detecting pivots as a part of a system and it is important you are aware the pivot labels are not designed to be traded in real-time themselves
🔶 USAGE
The indicator can provide information helping the user to infer the position of future pivot points. This information is directly used in the indicator to provide such forecasting. Note that each metric is calculated relative to the same type of pivot points.
It is also common for analysts to use pivot points for the construction of various figures, getting the percentage change and distance for each pivot point can allow them to eventually filter out points of non-interest.
🔹 Forecast
We use the trailing mean of the distance between respective pivots to estimate the time position of future pivot points, this can be useful to estimate the location of future tops/bottoms. The time position of the forecasted pivot is given by a vertical dashed line on the chart.
We can see a successful application of this method below:
Above we see the forecasted pivots for BTCUSD15. The forecast of interest being the pivot high. We highlight the forecast position with a blue dotted line for reference.
After some time we obtain a new pivot high with a new forecast. However, we can see that the time location of this new pivot high matches perfectly with the prior forecast.
The position in time for the forecast is given by:
x1_ph + E
x1_pl + E
where x1_ph denotes the position in time of the most recent pivot high. x1_pl denotes the position in time of the most recent pivot low and E the average distance between respective pivot points.
🔶 SETTINGS
Length: Window size for the detection of pivot points.
Show Forecasted Pivots: Display forecast of future pivot points.
🔹 Dashboard
Dashboard Location: Location of the dashboard on the chart
Dashboard Size: Size of the dashboard on the chart
Text/Frame Color: Determines the color of the frame grid as well as the text color
Strat Assistant ScreenerStrat Assistant Screener
----------------------------
█ OVERVIEW
This script is intended to provide screening/scanning functionality for the strat for the time period provided in the input (Day is the default).
When added, the script provides a chart with labels separated for each type of candle (2 up, 2 down, outside, inside) as well as actionable signals (inside already provided, hammer, shooter). Trading view is limited to 40 "security/ticker/symbol" calls so only 40 at a time are available. It's best to run this on higher time frames as it will occasionally push peak trading view memory limits and throw an error. Various inputs are provided a detailed below. It's not FAST so be patient please.
█ DETAIL
Inputs
----------
Security/Screener Time Frame: The screener will only run for one time frame, the time frame selected and this can be changed
Actionable Wick Percentage: The percentage of the WICK to determine a hammer or a shooter. For example, the default is .75 or 75%, which means 75% of the candle must be a WICK (top wick 75% for shooter, bottom wick 75% for hammer). If you wish to be more conservative scale it down or more aggressive scale it up
Label Index Offset Factor: There are 6 separate labels that will appear at the bottom separated by this indicator. If you feel like things are too tight or too narrow you can adjust this to spread things out further, or push them closer together.
Security/SXX: The various securities that can be input to track. If you find this is a pain, you can always copy the source code, put it in the pine editor yourself, and manually modify them there. Trading view limits you to 40 securities/symbols/tickers so I've pushed the limit as far as I can with this script.
Outputs
----------
The screener will provide a second chart at the bottom of the primary chart with labels for the types of candles and actionable signals
Each label will be present even if no results are found.
The label will display the time frame selected toward the end of the header - Strat Assistant Screener:
Each label is colored for quick reference to indicate the various bull/bear/inside/outside "patterns"
Best Practices
----------
It is not fast, so please be patient and let it run.
This screener is best used as a utility a few times a day, not recommended for intraday. I will create a scaled down version of this will only 5 securities/symbols/tickers that can be used intraday.
The screener pushes the limits of training views provided memory, so you may occasionally see errors, please try a higher time frame.
The bottom chart can be scaled and moved just like the top one, play around with it to determine what works best for you. I recommend decreasing the scale and then moving it up so you can see it better.
When the time frame is changed, it will take a minute, you can verify the results by seeing the time frame change in the label - Strat Assistant Screener:
I have not played with this thoroughly intraday yet. So it may be buggy/slower.
McClellan Oscillator for DAX (GER30) [aftabmk modified]About McClellan Oscillator
Developed by Sherman and Marian McClellan, the McClellan Oscillator is a breadth indicator derived from Net Advances, the number of advancing issues less the number of declining issues. Subtracting the 39-day exponential moving average of Net Advances from the 19-day exponential moving average of Net Advances forms the oscillator.
As the formula reveals, the McClellan Oscillator is a momentum indicator that works similar to MACD .
McClellan Oscillator signals can be generated with breadth thrusts, centerline crossovers, overall levels and divergences.
About my version
This version here is a modification, though:
- It can only be used on the DAX index (DAX 30 or GER 30)
- It only considers the DAX 30 stocks
- The data window will provide a summary about rising and declining stocks
- The data window will output the last change for each of the 30 stocks
BUG
I am only publishing this version because I am not sure if my current version is saved when I leave tradingview.com without publishing the script.
This version still contains a bug - the if/else clauses do not correctly recognize declining stocks. So the oscillator should not be used as it is.
Working on it these days. Feel free to provide feedback!
Stuff I am working on
- Coloring the area green/red according to the value
- Fixing this bug/making this script more efficient
DISCLAIMER
This script was mainly written for educational purposes (training myself how to write custom indicatotors).
As you can see, the code is really messy.
Credits
Based on the simple version of aftabmk
You can find the original version by searching for McClellan Oscillator for nifty 50.
Tiger's Stop - Objective Stoploss SettingTrading is a lot about risk management too. I created this script to help with setting and moving a proper stop-loss. It plots an area that is a result of adding and subtracting both average true range and something I call "false range".
►The Average True Range is calculated as the candle's high-low. If there is a gap, it is added to complete the result.
►My own False Range just candle bodies. It is calculated as an absolute value of (close-open).
Then, Rolling Moving Average is applied on both ATR and False Range to get an idea of how far the price tends to extend out of pure randomness. The resulting value is multiplied by a Multiplier.
The next step is an addition of the values to the higher part of the candle for short or a lower part of the candle for long. I prefer a special calculation instead of using Highs and Lows because it allows for more precise observation and stop-loss set up for less wicky symbols.
►►►Additional Functions
• Smoothing - applies moving average to candles from which range distance is calculated. This can achieve good smoothness but higher values will lead to using outdated price in the SL area calculation.
• Enable/Disable - if you know the direction you are going to trade in, it is good to disable either Long Stop-Loss Area or Short Stop-Loss Area. Just untick it in the settings.
►►►Actual Using
Before using the script to set your stop-loss, check the historical data and find a similar set-up. Is it engulfing you use as a trigger? Find a different one and see how effective the stop-loss based on the ATR*multiplier was. This will help you to optimize Multiplier value. A picture shows such research for a double top. You should find more similar situations to find an optimal value.
Ultimately, the indicator still gives you relatively a lot of freedom with your stop-loss settings (at least, that is with the default settings). You need to decide how loose stop-loss you want to set. Average True Range is the furthermost part which will make for a very large stop-loss, on the other hand, False Range might be triggered by a villainous wick unnecessarily. The choice should depend on the specific symbol you trade and perhaps, you will learn to set stops regardless of the indicator.
A little trick : 1. You can set the loosest stop-loss and set a TradingView alert for where the tightest stop-loss would be. When alerted, you will get the opportunity to reconsider the trade and take a loss if needs be or exit if a candle closes there. 2. Mostly for cryptocurrencies, you can set the tightest stop-loss to protect yourself from sudden spikes. If the price approaches it slowly enough, you can move the stop-loss to the further part of the channel. This is not the same as moving stop-loss indefinitely with hopes of reversal if you plan it from the beginning and a smaller stop is meant to protect you from spikes that are not always predictable and drive to both directions.
►►►Advantages of trailing stop-loss
I usually stick with my original stop-loss instead of moving to break even. If my entry area was functional support once, it may work again and is, therefore, still a good entry zone. But an alternative used to preserve as much of the profit as possible is trailing.
Trailing is setting a specific value in ticks or a calculation of how to move the stop-loss whenever the price moves in your favor. Tiger's Stop can be used this way. Whenever there is a new value as the candle closes and that value is closer to price than your current stop-loss, you can update it. However, if it moves further from your price, don't change the stop-loss. This can be a little tiresome if you do it manually but should be worth the effort.
I usually start trailing only after the price moves significantly in my favor that allowing it to return to the entry price would not make any sense.
►►►Feedback and optimization
The preview chart is chosen entirely at random and the values are not optimized for any specific symbol. If you opt to use it, let me know which values work for you the best, I'll add it to the description when I update it.
Furthermore, let me know if you think any sort of alerts would be useful with my script.
Good luck!
Tweezers and Kangaroo TailHello Traders,
Here Tweezers and Kangaroo Tail script is in your service. The script searches for Tweezer / Kangaroo Tail candlestick patterns and shows them as T (Tweezer) and K (Kangaroo Tail). Thanks to RorschachT who game me the idea and some details while working on this script.
What are these candlestick patterns?
Tweezers :
- A tweezers pattern occurs when the highs/Lows of two candlesticks occur at almost exactly the same level
- Both candles must have wicks
- Bigger Wick / Smaller Wick rate should not be greater than 150% ( 150% by default and you have option to change it)
- First Candle must be highest/lowest for last 5 candles (5 by default and you have option to change it)
- The level of High for Top, Low for Bottom must be almost lower than 20% of the bigger wick of tweezer candles (20% by default and you have option to change it)
- The Candles can be right next to each other or apart but not more than 12 candles apart (12 by default and you have option to change it)
- You will see that Tweezers pattern occurs frequently
Kangaroo Tail:
- Looks almost like a Hammer or Inverted Hammer candle
- They have both its open and close in the top or bottom third of the candle
- There must be some space/room on the left of the kangaroo tail
- The open and close of the Kangaroo Tail candle must be inside the range of the previous candlestick
- The next candle should create a new high or new low
- You have several options to set details about the "Room" that should be on the left and also options for Wick/Body rates
- You can see example below
You have option to enable/disable any of these patterns.
as far as I have tested they are strong reversal patterns but none of the indicators or patterns may not be enough alone. so you should confirm the signals using other indicators or tools
If you need more information you can find a lot of info on the net ;)
Example: Tweezers - Aparted
Example: Kangaroo Tail - Bullish
Enjoy!
Session High and Session LowI have heard many people ask for a script that will identify the high and low of a specific session. So, I made one.
Important Note: This indicator has to be set up properly or you will get an error. Important things to note are the length of the range and the session definition. The idea is that you would set it up for what's relevant to your trading. Going too far back in the chart history will cause errors. Setting the session for a time that is not on the chart can cause errors. If you set it to look farther back than there are bars to display, you may get an error. What I've found is that if you get an error, you just need to change the settings to reflect available data and it will be able to compile the script. At the time of its publishing, the default range start is set to 10/01/2020. If you're looking at this years later, you'll probably have to set the range to something more recent.
Features:
Plot or Lines:
Using Plot (displayed), the indicator will track the high/low from the end of the session into the next session. Then at the start of the next session, it will start tracking the high/low of that session until its end, then track that high/low until the start of the next session then reset.
Using lines, it will extend horizontal lines to the right indefinitely. The number of sessions back that the lines apply to is a user-defined number of sessions. There are limits to the number of lines that can be cast on a chart (roughly 40-50). So, the maximum number of sessions you can apply the lines to is the last 21 sessions (42 lines total). That gets really noisy though so I can't imagine that is a limiting factor.
Colors:
You can change the background color and its transparency, as well as turn the background color on or off.
You can change the highs and lows colors
You can adjust the line width to your preference
Session Length:
You can use a continuous session covering any user-defined period (provided its not tooooo many candles back)
You can define the session length for intraday
You can exclude weekends
Display Options:
You can adjust the colors, transparency, and linewidth
You can display the plotline or horizontal lines
You can show/hide the background color.
You can change how many sessions back the horizontal lines will track
Let me know if there's anything this script is missing or if you run into any issues that I might be able to help resolve.
Here's what it looks like with Lines for the last 5 sessions and different background color.
CryptoSignalScanner - Advanced Moving Averages - Cross & RainbowDESCRIPTION:
With this script you can plot 6 moving averages.
You can decide which Moving Average you want to show or hide.
For every plot you can decide to display the Simple Moving Average ( SMA ) or Exponential Moving Average ( EMA ).
It provides CrossOver and CrossUnder labels when loading the script. Those labels you can show or hide.
You have the possibility to show or hide the rainbow colors. This rainbow function gives you a clear view of the current trend.
HOW TO USE:
• When one Moving Average crosses above another Moving Average it signals an uptrend.
• When one Moving Average crosses below another Moving Average it signals a downtrend.
• The higher to length of the Moving Average the stronger the trend.
FEATURES:
• You can show/hide the preferred Moving Averages.
• You can set the length, type and source for every Moving Average.
• You can show/hide the rainbow colors.
• You can show/hide the CrossUp labels.
• You can show/hide the CrossDown labels.
• You can set alerts for every Moving Average.
• Etc...
DEFAULT SETTINGS:
• MA1 => EMA5
• MA2 => EMA10
• MA3 => EMA20
• MA4 => SMA50
• MA5 => SMA100
• MA6 => SMA200
Simple Moving Average vs. Exponential Moving Average:
SMA and EMA are calculated differently. The exponential moving average ( EMA ) focuses more on recent prices than on a long series of data points, as the simple moving average required.
The calculation makes the EMA quicker to react to price changes and the SMA react slower. That is the main difference between the two.
One is not necessarily better than another. It comes down to personal preference. Plot an EMA and SMA of the same length on a chart and see which one helps you make better trading decisions.
Moving Average Trading Strategies:
The first strategy is a price crossover, when the price crosses above or below a moving average, it signals a potential change in trend.
The second strategy applies when one moving averages crosses another moving average.
• When the short-term MA crosses above the long-term MA, it signals a buy signal.
• When the short-term MA crosses below the long-term MA, it signals a sell signal.
REMARKS:
• This advice is NOT financial advice.
• We do not provide personal investment advice and we are not a qualified licensed investment advisor.
• All information found here, including any ideas, opinions, views, predictions, forecasts, commentaries, suggestions, or stock picks, expressed or implied herein, are for informational, entertainment or educational purposes only and should not be construed as personal investment advice.
• We will not and cannot be held liable for any actions you take as a result of anything you read here.
• We only provide this information to help you make a better decision.
• While the information provided is believed to be accurate, it may include errors or inaccuracies.
If you like this script please donate some coins to share your appreciation.
Good Luck,
SEOCO
Timezone Highlight v1.0Features Explained:
Customizable Time Settings:
Easily adjust the opening and closing times for each session to fit your local time zone or trading preferences.
Color-Coded Sessions:
New York : Blue
London : Yellow
Tokyo : Red
Sydney : Green
You can modify the colors or transparency in the script.
Dynamic Highlighting:
Automatically highlights the active trading session based on the current time.
This Pine Script is user-friendly and designed to provide immediate visual insights into global market activity. Let me know if you need further enhancements!
Its my first script so please don't be too strict!